package ganga.custodian.human;

import java.util.Observable;
import java.util.Observer;

import android.app.Service;
import android.content.Intent;
import android.os.IBinder;
import ganga.custodian.CustodianApplication;
import ganga.custodian.human.EmergencyDetector;

/**
 * Отвечает за сбор(получение) показателей модели
 * @author Apocrypha
 * @version 0.2
 * @updated 07-июл-2011 18:35:35
 */
public class ModelMonitor extends Service implements Observer{

	private CustodianApplication application;

	public ModelMonitor(){
		application = CustodianApplication.getInstance();
		humanModel = application.humanModel;
	}
	private HumanModel humanModel;

	@Override
	public int onStartCommand(Intent intent, int flags, int startId) {
		super.onStartCommand(intent, flags, startId);
		//Получено оповещение о новом ударе сердца
		
		
		//Рабор сообщения
		Integer duration = intent.getIntExtra("RRInervalDuration", 950);

		//TODO: Следующие вызовы должны быть асинхронными
		//Обращение к модели
		humanModel.AddRRInterval(duration);
		double currentHeartRate = humanModel.GetHeartRate();
		
		Intent intentForModelMonitor = new Intent("Redraw");
		intentForModelMonitor.putExtra("RRInterval", duration);
		intentForModelMonitor.putExtra("CurrHeartRate", currentHeartRate);
		sendBroadcast(intentForModelMonitor);

		//Обнаружение критический ситуации
		if (application.emergencyDetector.Execute() != null){
			application.notificationExecutor.doPlayTaskManHROverhead();
		}
		// React By Toast
			
		//String toastMessage = "";//String.format("Lat: %f", location.getLatitude());
		/*String toastMessage = String.format("RR: %d, HR: %f", duration, humanModel.GetHeartRate());
		Toast
			.makeText(getApplicationContext(), toastMessage, Toast.LENGTH_SHORT)
			.show();*/
		//showLocationByToast();
		
		return Service.START_STICKY;
		
	}

	private double modelSamplingRate;
	private String currentValue;
	private EmergencyDetector emergencyDetector;

	@Override
	public void onCreate() {
		super.onCreate();
		emergencyDetector = new EmergencyDetector(); 
	}
	public void start(){

	}

	public void stop(){

	}

	public void redrawScreen() {

		Intent in = new Intent("Redraw");
		in.putExtra("RRInterval", currentValue);
		sendBroadcast(in);
	}

	/**
	 * Уcтанавливает частоту сбора отслеживаемых данных
	 * 
	 * @param rate
	 *            Частота в Герцах
	 */
	public void setModelSamplingRate(double rate){
		modelSamplingRate = rate;
	}

	@Override
	public IBinder onBind(Intent intent) {
		// TODO Auto-generated method stub
		return null;
	}
	@Override
	public void update(Observable observable, Object data) {
		observable
		
	}
}
